; 使用bios的0x13中断读取磁盘 dh作为扇区数量参数
disk_load:
    pusha

    push dx
    mov al, dh    ; al 扇区数量
    mov ah, 0x02  ; 读取功能
    ; [es:bx] 存放的是读取到的内存地址 由调用者设置
    mov cl, 0x02 ; 扇区号
    mov ch, 0x00 ; 柱面号
    ; dl 磁盘驱动器号 0 软盘1 1 软盘2 0x80 磁盘1 0x81 磁盘2 启动时bios已经设置好了
    mov dh, 0x00 ; 磁头号
    int 0x13
    ; 调用异常时carry位会溢出
    jc disk_error
    ; 调用完成时bios会将ah设置为读取的扇区数
    pop dx
    cmp al, dh
    je disk_load_end
    mov bx, SECTORS_ERROR_MSG
    call print
    mov dh, ah
    call print_hex
    call print_nl
    jmp disk_load_end

disk_error:
    mov bx, DISK_ERROR_MSG
    call print
    mov dh, ah
    call print_hex
    call print_nl

disk_load_end:
    popa
    ret

SECTORS_ERROR_MSG:
    db "sector number read error: ", 0

DISK_ERROR_MSG:
    db "disk read error: ", 0
    